import { normalizePagesJson } from './normalize-pages';
import {
  filterPlatformsOfPages,
  markPageType,
  simplifyTabBar,
} from './helpers';
import { PAGES_JSON } from '@shared';

/**
 * 将 pages.json 拆分为一组配置文件
 * @param {String} data
 * @returns {Object} 拆分后的数据
 */
export function splitPagesJson(data) {
  // 将 pages.json 数据转换为标准的 JSON 数据格式并转换为对象
  data = normalizePagesJson(data);
  // 转换数据
  let pages = [];
  // 主包页面
  let mainPages = filterPlatformsOfPages(data.pages);
  // 标记首页与选项卡页
  mainPages = markPageType(mainPages, data.tabBar);
  // 分包页面
  let subpackagePages = [];
  if (data.subpackages) {
    data.subpackages.forEach((subpackage) => {
      subpackagePages = subpackagePages.concat(
        filterPlatformsOfPages(subpackage)
      );
    });
  }
  // 所有页面
  pages = mainPages.concat(subpackagePages);

  // 其他配置
  const config = {
    extras: {},
    theme: {},
  };
  const keys = Object.keys(data);
  keys.forEach((key) => {
    if (~PAGES_JSON.COMMON_OPTIONS.indexOf(key)) {
      config[key] = data[key];
    } else if (key === PAGES_JSON.TAB_BAR) {
      config[key] = simplifyTabBar(data[key]);
    } else if (!~PAGES_JSON.PRIMARY_OPTIONS.indexOf(key)) {
      config.extras[key] = data[key];
    }
  });

  return {
    pages,
    config,
  };
}
